package templ;

/**
 * A classe AbstractManager é responsável por definir os métodos que tratam as informações
 * de entrada
 * @author Lucas
 */
public abstract class AbstractManager {
    
    /**
     * O tamanho de um ID
     */
    protected static int ID_SIZE = 5;
    /**
     * O tamanho máximo de uma string aceito pelo sistema
     */
    protected static int MAX_STRING_SIZE = 50;
    /**
     * O valor mínimo de idade para uma pessoa
     */
    protected static int MIN_AGE = 0;
        /**
     * O valor máximo de idade para uma pessoa
     */
    protected static int MAX_AGE = 200;
     /**
     * O valor mínimo de salário para um funcionário
     */
    protected static double MIN_SALARY = 0;
    /**
     * O valor máximo de salário para um funcionário
     */
    protected static double MAX_SALARY = 100000.00;
    /**
     * A quantidade mínima de dependentes para um funcionário
     */
    protected static int MIN_RELATIVES = 0;
        /**
     * A quantidade máxima de dependentes para um funcionário
     */
    protected static int MAX_RELATIVES = 5;

    /**
     * Verifica se alguma das Strings passadas como parâmetro é nula
     * @param fields Uma coleção de Strings
     * @return verdadeiro se todas as Strings são diferentes de nulo, falso caso contrário
     */
    public boolean isNotEmpty(String... fields) {
        boolean valid = true;
        for (String field : fields) {
            if (field == null || field.isEmpty()) {
                valid = false;
            }
        }
        return valid;
    }

    /**
     * Verifica se um determinado campo possui um valor válido <br>
     * Field Type: <br>
     * <li> 1 - Name </li>
     * <li> 2 - Age </li>
     * <li> 3 - Salary </li>
     * @param fieldType o tipo do campo
     * @param content o valor de entrada
     * @return verdadeiro se o valor de entrada é valido para aquele campo, falso caso contrário
     */
    public abstract boolean isValidField(int fieldType, String content);
    
}
